package com.spzx.common.security.annotation;

import java.lang.annotation.*;

@Target(ElementType.METHOD) //在方法上标注
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface SpzxCache {
    /*
            属性1：分布式锁和缓存的key前缀
            属性2：分布式锁的过期时间 单位默认秒
            属性3：是否缓存空值
            属性4：空值的缓存时间 单位秒
            属性5：非空数据的缓存时间 单位秒
            属性6： 分布式锁的后缀
            属性7： 缓存的随机因子基数  200秒
     */
    String prefix();
    String lockExpire() default "5";
    boolean isSaveNull() default true;
    //空值缓存时间过长 会导致redis内存压力较大
    long nullValCachedTime() default 10L;
    long notNullValCachedTime() default 600L;
    String lockSuffix() default ":lock";
    long random() default 200L;
    //属性8： 防止缓存穿透问题 布隆过滤器的key前缀
    //属性10： 防止缓存穿透问题 是否需要布隆过滤器校验
    boolean isBloomValidate() default false;
    //属性9： 防止缓存穿透问题  当作值去布隆过滤器判断是否存在的属性索引 :参数索引默认位0


}
